常用算法设计模式与解题模板
📚 共计 30 章节
01
算法复杂度分析
大O表示法 · 时间复杂度 · 空间复杂度 · 最好/最坏/平均情况分析
基础
核心
02
暴力枚举法
核心思想 · 适用场景 · 优化技巧 · 经典例题(两数之和)
入门
枚举
03
递归与回溯
递归三要素 · 回溯框架 · 剪枝优化 · 全排列、N皇后
递归
回溯
04
分治算法
分治思想 · 归并排序 · 快速排序 · 最大子数组和
分治
排序
05
贪心算法
贪心策略 · 正确性证明 · 区间调度 · 零钱兑换
贪心
策略
06
动态规划入门
DP核心 · 状态定义 · 转移方程 · 斐波那契、爬楼梯
DP
入门
07
动态规划进阶
背包问题 · 0-1背包 · 完全背包 · 分割等和子集
背包
进阶
08
动态规划高级
区间DP · 树形DP · 最长回文子串 · 打家劫舍III
区间DP
树形
09
深度优先搜索 (DFS)
DFS模板 · 邻接表/矩阵 · 岛屿数量 · 课程表
DFS
图
10
广度优先搜索 (BFS)
BFS模板 · 最短路径 · 层序遍历 · 单词接龙
BFS
队列
11
二分查找
二分模板 · 左右边界 · 搜索旋转排序数组
二分
搜索
12
双指针技巧
对撞指针 · 快慢指针 · 滑动窗口 · 三数之和、盛水容器
双指针
滑动窗口
13
哈希表与集合
哈希原理 · 冲突解决 · 两数之和 · 最长连续序列
哈希
集合
14
链表操作
链表反转 · 快慢指针 · 合并有序链表 · 环形/相交链表
链表
指针
15
栈与队列
单调栈 · 单调队列 · 有效括号 · 滑动窗口最大值
栈
队列
16
二叉树遍历
前/中/后/层序 · 递归与迭代 · 二叉树的最大深度
二叉树
遍历
17
二叉搜索树
BST性质 · 插入删除 · 验证BST · 最近公共祖先
BST
搜索树
18
堆与优先队列
堆的构建 · 堆排序 · 前K个高频元素 · 数据流中位数
堆
优先队列
19
图论基础
图的表示 · 拓扑排序 · 课程表II · 克隆图
图
拓扑
20
最短路径算法
Dijkstra · Bellman-Ford · Floyd · 网络延迟时间
最短路径
图
21
最小生成树
Prim · Kruskal · 连接所有点的最小费用
MST
并查集
22
并查集
实现 · 路径压缩 · 按秩合并 · 省份数量 · 等式方程
并查集
连通
23
字符串匹配
KMP · Rabin-Karp · 实现strStr()
字符串
匹配
24
位运算技巧
常用位操作 · 状态压缩 · 只出现一次的数字 · 子集枚举
位运算
压缩
25
前缀和与差分
一维/二维前缀和 · 差分数组 · 区域和检索 · 航班预订
前缀和
差分
26
线段树与树状数组
区间查询 · 单点更新 · 区域和检索-数组可修改
线段树
树状数组
27
设计数据结构
LRU缓存 · LFU缓存 · 实现LRUCache
设计
缓存
28
数学与数论
素数判断 · 最大公约数 · 快速幂 · Pow(x,n) · 质数计数
数学
数论
29
随机化算法
洗牌算法 · 蓄水池抽样 · 打乱数组 · 随机数索引
随机
洗牌
30
综合实战
多算法融合 · 系统设计思维 · 设计Twitter · 单词搜索II
综合
实战